'''
Created on 07/06/2012

@author: rcasal
'''
# -*- coding: utf-8 -*-

if 0:
    None
    import gluon
    import gluon.languages.translator as T
    from gluon.html import A, DIV, TABLE, TR, TD, SELECT, OPTION, XML, URL, INPUT, H3
    from repositories.sigecon.comunicacion import ComunicacionRepository as comunicaciones
    from repositories.sigecon.comunicacion import CondicionRepository as condiciones
    from repositories.sigecon.consulta import ConsultaRepository as consultas
    from repositories.sigecon.consulta import TipoConsultaRepository as tipos
    from repositories.sigecon.consulta import SubtipoConsultaRepository as subtipos
    from repositories.sigecon.consulta import RespuestaRepository as respuestas
    from repositories.sigecon.consulta import ConsultaHistoryRepository as consultas_archive
    from repositories.sigecon.usuario import SectorRepository as sectores
    from repositories.sigecon.usuario import AuthRepository as auth

import json
import datetime
from domain.forms.sqlforms import FormFactory
from domain.entities.comunicacion import Comunicacion
from domain.entities.consulta import Consulta

def inicializar_con_request_vars(consulta):
    consulta.tipo = tipos.findOne(request.vars.consulta)
    consulta.subtipo = subtipos.findOne(request.vars.subconsulta)
    consulta.respuesta = respuestas.findOne(request.vars.respuesta)
    consulta.comentario = request.vars.comentarios
    consulta.sector = sectores.findOne(request.vars.sector)
    consulta.finalizado = True
    if consulta.respuesta and (consulta.respuesta.codigo == "DERIVADA" or consulta.respuesta.codigo == "PENDIENTE"):
        consulta.finalizado = False
        
def add_ajax(form):
    consultas_onchange = form.element(_name='consulta')
    consultas_onchange['_onchange'] = XML("ajax('" + URL(r=request, c = 'combos', f='select_subconsultas_por_consulta') + "', ['consulta'], 'div_no_table_subconsulta__row');ajax('" + URL(r=request, c = 'combos', f='select_respuestas_por_subconsulta') + "', ['subconsulta'], 'div_no_table_respuesta__row')")
    
    subconsulta_onchange = form.element(_name='subconsulta')
    subconsulta_onchange['_onchange'] = XML("ajax('" + URL(r=request, c = 'combos', f='select_respuestas_por_subconsulta') + "', ['subconsulta'], 'div_no_table_respuesta__row'); ajax('" + URL(r=request, c = 'combos', f='select_sectores_por_respuesta') + "', ['respuesta'], 'div_no_table_sector__row')")
    
    respuesta_onchange = form.element(_name='respuesta')
    respuesta_onchange['_onchange'] = XML("ajax('" + URL(r=request, c = 'combos', f='select_sectores_por_respuesta') + "', ['respuesta'], 'div_no_table_sector__row')")
    
@auth.requires_login()  
@auth.requires_membership("CARGA") 
def comunicacion_recarga():
    comunicacion = Comunicacion()
    comunicacion = comunicaciones.findLastByUserId(auth.user_id)   
    
    consulta = Consulta()
    
    if comunicacion == None:
        session.flash = DIV(
                            DIV("No se encontraron consultas previas"),
                            DIV("Si usted cree que es un error, "),
                            DIV("por favor contacte a la mesa de ayuda " + MESA)
                            )
        redirect(URL(request.application, 'errors', 'attention'))
    
    sub = datetime.datetime.now() - comunicacion.fecha
    
    if sub.seconds > 1800:
        session.flash = DIV(
                            DIV("Ya pasaron mas de 30 minutos desde su ultima carga"),
                            DIV("Debera cargar la consulta nuevamente"))
        redirect(URL(request.application, 'errors', 'attention'))     
    
    consulta.comunicacion = comunicacion
    consulta.comunicacion.modalidad = modalidades.findOne(consulta.comunicacion.modalidad.ID)
    consulta.comunicacion.condicion = condiciones.findOne(consulta.comunicacion.condicion.ID)
    
    inicializar_con_request_vars(consulta)
    consultas.refresh_requires(consulta)
    form = FormFactory.carga_consulta(consultas.tabla) 
    add_ajax(form)
    
    datos = DIV(
        DIV(LABEL("Fecha:"), consulta.comunicacion.fecha.strftime("%d/%m/%Y %H:%M")),
        DIV(LABEL("Modalidad: "), consulta.comunicacion.modalidad.descripcion),
        DIV(LABEL("Tipo: "), consulta.comunicacion.condicion.descripcion),
        DIV(LABEL("Nombre: "), consulta.comunicacion.nombre),
        DIV(LABEL("Telefono: "), consulta.comunicacion.telefono),
        DIV(LABEL("Mail: "), consulta.comunicacion.mail)
    )
    
    form.vars.comunicacion = consulta.comunicacion.ID
    form.vars.finalizado = consulta.finalizado
    form.vars.usuario = auth.user_id
    
    if form.process().accepted:
        
        idcon = consultas.save(form.vars)        
        session.flash=DIV(DIV(T('Consulta guardada')), 
                    DIV('Numero: ' + str(idcon))) 
          
        if consulta.comunicacion.modalidad.descripcion == "TELEFONICA":
            redirect(URL(request.application, 'comunicacion', 'comunicacion_telefonica'))
        if consulta.comunicacion.modalidad.descripcion == "PERSONAL":
            redirect(URL(request.application, 'comunicacion', 'comunicacion_personal'))
        if consulta.comunicacion.modalidad.descripcion == "MAIL":
            redirect(URL(request.application, 'correo', 'correo_entrada'))
            
    return dict(title = "Agregar consulta a ultima comunicacion", form = form, datos = datos, form_error = form.errors)
   
